﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BLL;
using Public;

namespace QLNhanKhau
{
    public partial class UCUpdateKhaiTu : UserControl
    {
        public UCUpdateKhaiTu()
        {
            InitializeComponent();
        }

        private void UCUpdateKhaiTu_Load(object sender, EventArgs e)
        {
            cmbNguoiNhan.DataSource = NguoiDungBLL.LoadNguoiCap();
            cmbNguoiNhan.DisplayMember = "HoTen";
            cmbNguoiNhan.ValueMember = "MaND";

            //load cho phần khai sinh

            cmbNguoiCap.DataSource = NguoiDungBLL.LoadChuTich();
            cmbNguoiCap.DisplayMember = "HoTen";
            cmbNguoiCap.ValueMember = "MaND";

            cmbCanBoHoTich.DataSource = NguoiDungBLL.LoadCanBoHoTich();
            cmbCanBoHoTich.DisplayMember = "HoTen";
            cmbCanBoHoTich.ValueMember = "MaND";
        }
        int _MaKT;
        private void dgvKhaiTu_SelectionChanged(object sender, EventArgs e)
        {
            DataGridViewCell cell = null;

            foreach (DataGridViewCell select in dgvKhaiTu.SelectedCells)
            {
                cell = select;
            }
            if (cell != null)
            {
                DataGridViewRow row = cell.OwningRow;
                _MaKT = (int)row.Cells[0].Value;
                txtHoTen.Text = (string)row.Cells[1].Value;
                dateNgaySinh.Value = ((DateTime)row.Cells[5].Value);
                if ((bool)row.Cells[7].Value == true)
                    sbtGioiTinh.Value = true;
                else
                    sbtGioiTinh.Value = false;
                txtDanToc.Text = DanTocBLL.LoadDanTocByMaDT((byte)row.Cells[9].Value).TenDanToc;
                txtQuocTich.Text = QuocTichBLL.LoadQuocTichByMaQT((byte)row.Cells[11].Value).TenQuocTich;
                txtCMND.Text = (string)row.Cells[4].Value;
                KhaiTuPublic kt = KhaiTuBLL.LoadKhaiTuByMaKT((int)row.Cells[0].Value);
                txtSoChungTu.Text = kt.SoChungTu.ToString();
                txtSoBaoTu.Text = kt.SoBaoTu.ToString();
                dateNgayCapBaoTu.Value = (DateTime)kt.NgayCapBaoTu;
                txtNoiCapBaoTu.Text = kt.NoiCapBaoTu;
                txtNguoiDangki.Text = kt.NguoiDangKi;
                txtLyDoChet.Text = kt.LyDoChet;
                txtNoiChet.Text = kt.NoiChet;
                txtNoiOCuoiCung.Text = kt.NoiOCuoiCung;
                dateNgayCapChungTu.Value = (DateTime)kt.NgayCap;
                cmbCanBoHoTich.SelectedValue = kt.CanBoHoTich;
                cmbNguoiCap.SelectedValue = kt.NguoiCap;
                txtChucVu.Text = ChucVuBLL.LoadChucVuByMaCV(NguoiDungBLL.LoadNguoiDungByMaND(kt.NguoiCap).MaCV).TenChucVu;
                txtNoiCapChungTu.Text = ThietLapBLL.LoadDiaChiByMaDiaChi(kt.NoiCap);
                cmbNguoiNhan.SelectedValue = kt.NguoiNhan;
                txtChucVuNguoiNhan.Text = ChucVuBLL.LoadChucVuByMaCV(NguoiDungBLL.LoadNguoiDungByMaND(kt.NguoiNhan).MaCV).TenChucVu;
                cmbCanBoDangKi.Text = NguoiDungBLL.LoadNguoiDungByMaND(kt.CanBoDangKi).HoTen;
                dateNgayNhap.Value = kt.NgayNhap;
                nudGio.Value = kt.NgayChet.Value.Hour;
                nudPhut.Value = kt.NgayChet.Value.Minute;
                dateNgayChet.Value = kt.NgayChet.Value.Date;
            }
        }

        private void btnTim_Click(object sender, EventArgs e)
        {
            if (txtSoKT.Text == "")
            {
                MessageBox.Show("Vui lòng nhập số khai tử", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtSoKT.Focus();
                return;
            }
            KhaiTuPublic kt = KhaiTuBLL.LoadKhaiTuBySoKT(int.Parse(txtSoKT.Text));
            
            if (kt==null)
            {
                MessageBox.Show("Không tìm thấy!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtSoKT.ResetText();
                txtSoKT.Focus();
                txtSoBaoTu.ResetText();
                txtNoiCapBaoTu.ResetText();
                txtSoChungTu.ResetText();
                txtLyDoChet.ResetText();
                txtNoiChet.ResetText();
                nudGio.ResetText();
                nudPhut.ResetText();
                dateNgaySinh.ResetValue();
                dateNgayChet.ResetValue();
                dateNgayCapChungTu.ResetValue();
                txtNguoiDangki.ResetText();
                txtNoiOCuoiCung.ResetText();
                cmbCanBoDangKi.ResetText();
                cmbNguoiCap.Refresh();
                cmbNguoiNhan.Refresh();
                txtHoTen.ResetText();
                txtQuocTich.ResetText();
                txtDanToc.ResetText();
                dateNgayCapBaoTu.ResetValue();
                txtCMND.ResetText();
                dgvKhaiTu.DataSource = null;
                return;
            }
            List<NhanKhauPublic> list_nk = NhanKhauBLL.LoadListNhanKhauByMaKT(kt.MaKT);
            dgvKhaiTu.DataSource = list_nk;
            //dgvKhaiTu.Columns[0].HeaderText = "Mã nhân khẩu";
            dgvKhaiTu.Columns[1].HeaderText = "Họ và tên";
            //dgvKhaiTu.Columns[3].HeaderText = "Tên gọi khác";
            dgvKhaiTu.Columns[4].HeaderText = "CMND";
            dgvKhaiTu.Columns[5].HeaderText = "Ngày sinh";
            //dgvKhaiTu.Columns[6].HeaderText = "Nơi sinh";
            dgvKhaiTu.Columns[7].HeaderText = "Giới tính";
            dgvKhaiTu.Columns[8].HeaderText = "Quê quán";
            dgvKhaiTu.Columns[9].HeaderText = "Dân tộc";
            dgvKhaiTu.Columns[10].HeaderText = "Nghề nghiệp";
            dgvKhaiTu.Columns[11].HeaderText = "Quốc tịch";
            //dgvKhaiTu.Columns[12].HeaderText = "Chứng tử";
            dgvKhaiTu.Columns[13].HeaderText = "Tôn giáo";
            dgvKhaiTu.Columns[14].HeaderText = "Trình độ";
            //dgvKhaiTu.Columns[15].HeaderText = "Sổ hộ khẩu";
            dgvKhaiTu.Columns[16].HeaderText = "Quan hệ";
            dgvKhaiTu.Columns[0].Visible = false;
            //dgvKhaiTu.Columns[1].Visible = false;
            dgvKhaiTu.Columns[2].Visible = false;
            dgvKhaiTu.Columns[3].Visible = false;
            //dgvKhaiTu.Columns[4].Visible = false;
            //dgvKhaiTu.Columns[5].Visible = false;
            dgvKhaiTu.Columns[6].Visible = false;
            //dgvKhaiTu.Columns[7].Visible = false;
            //dgvKhaiTu.Columns[8].Visible = false;
            dgvKhaiTu.Columns[9].Visible = false;
            //dgvKhaiTu.Columns[10].Visible = false;
            dgvKhaiTu.Columns[11].Visible = false;
            dgvKhaiTu.Columns[12].Visible = false;
            dgvKhaiTu.Columns[13].Visible = false;
            dgvKhaiTu.Columns[14].Visible = false;
            dgvKhaiTu.Columns[15].Visible = false;
            //dgvKhaiTu.Columns[16].Visible = false;
            dgvKhaiTu.Columns[17].Visible = false;
            dgvKhaiTu.Columns[18].Visible = false;
            dgvKhaiTu.Columns[19].Visible = false;
            dgvKhaiTu.Columns[20].Visible = false;
            dgvKhaiTu.Columns[21].Visible = false;
            dgvKhaiTu.Columns[22].Visible = false;
            dgvKhaiTu.Columns[23].Visible = false;
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            if (txtSoChungTu.Text == "" || txtSoBaoTu.Text == "" || txtNoiCapBaoTu.Text == "" || txtNguoiDangki.Text == "" || txtLyDoChet.Text == "" ||
                txtNoiChet.Text == "" || txtNoiOCuoiCung.Text == "" || txtNoiCapChungTu.Text == "")
            {
                MessageBox.Show("Vui lòng nhập đầy đủ thông tin", "Thông báo nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (dateNgayChet.Value > DateTime.Now||dateNgayChet.Value>dateNgayCapBaoTu.Value)
            {
                MessageBox.Show("Thời gian chết không hợp lệ", "Thông báo nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                dateNgayChet.Focus();
                return;
            }
            if (dateNgayCapBaoTu.Value > dateNgayChet.Value || dateNgayCapBaoTu.Value > DateTime.Now)
            {
                MessageBox.Show("Ngày cấp báo tử không hợp lệ", "Thông báo nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                dateNgayCapBaoTu.Focus();
                return;
            }
            if (dateNgayCapChungTu.Value > DateTime.Now || dateNgayCapChungTu.Value > dateNgayChet.Value)
            {
                MessageBox.Show("Ngày cấp chứng tử không hợp lệ", "Thông báo nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                dateNgayCapBaoTu.Focus();
                return;
            }
            int SoChungTu=int.Parse(txtSoChungTu.Text);
            int SoBaoTu=int.Parse(txtSoBaoTu.Text);
            DateTime NgayChet=dateNgayChet.Value.AddHours((double)nudGio.Value).AddMinutes((double)nudPhut.Value);
            byte ChucVu=NguoiDungBLL.LoadNguoiDungByMaND((int)cmbNguoiCap.SelectedValue).MaCV;
            byte ChucVuNguoiNhan=NguoiDungBLL.LoadNguoiDungByMaND((int)cmbNguoiNhan.SelectedValue).MaCV;
           
            //KhaiTuDAL.UpdateKhaiTu(SoChungTu, SoBaoTu, NgayCapBaoTu, NoiCapBaoTu, NguoiDangKi, LyDoChet, NgayChet,NoiChet, NoiOCuoiCung, CanBoHoTich, NgayCap, NguoiCap, ChucVu, NguoiNhan, ChucVuNguoiNhan, MaKT);
            
            KhaiTuBLL.UpdateKhaiTu(SoChungTu, SoBaoTu, dateNgayCapBaoTu.Value, txtNoiCapBaoTu.Text, txtNguoiDangki.Text, txtLyDoChet.Text, NgayChet, txtNoiChet.Text, txtNoiOCuoiCung.Text, (int)cmbCanBoHoTich.SelectedValue, dateNgayCapChungTu.Value, (int)cmbNguoiCap.SelectedValue, ChucVu, (int)cmbNguoiNhan.SelectedValue, ChucVuNguoiNhan, _MaKT);
            MessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            UCUpdateKhaiTu_Load(sender, e);
           
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            DialogResult resuft = MessageBox.Show("Xóa khai tử này!", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            switch (resuft)
            { 
                case DialogResult.OK:
                    //NhanKhauBLL.UpdateKhaiTu(_MaKT,null);
                    KhaiTuBLL.DeleteKhaiTu(_MaKT);
                    UCUpdateKhaiTu_Load(sender, e);
                    break;
                case DialogResult.Cancel:
                    break;
            }
        }

        private void cmbNguoiNhan_SelectionChangeCommitted(object sender, EventArgs e)
        {
            NguoiDungPublic nd = NguoiDungBLL.LoadNguoiDungByMaND((int)cmbNguoiNhan.SelectedValue);
            //.Text = nd.ChucVu;
            txtChucVuNguoiNhan.Text = ChucVuBLL.LoadChucVuByMaCV(nd.MaCV).TenChucVu;
            txtChucVuNguoiNhan.Enabled = false;

        }

        private void txtLyDoChet_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtLyDoChet.Text.Length > 49 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void cmbNguoiCap_SelectionChangeCommitted(object sender, EventArgs e)
        {
            NguoiDungPublic nd = NguoiDungBLL.LoadNguoiDungByMaND((int)cmbNguoiNhan.SelectedValue);
            //.Text = nd.ChucVu;
            txtChucVu.Text = ChucVuBLL.LoadChucVuByMaCV(nd.MaCV).TenChucVu;
            txtChucVu.Enabled = false;
        }

        private void txtSoBaoTu_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) || txtSoBaoTu.Text.Length > 7 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtSoChungTu_Leave(object sender, EventArgs e)
        {
            if (KhaiTuBLL.TestSoChungTu(int.Parse(txtSoChungTu.Text)) != true)
            {
                this.balloonTip2.ShowBalloon(txtSoChungTu);
                this.balloonTip2.SetBalloonCaption(txtSoChungTu, "Thông báo");
                this.balloonTip2.SetBalloonText(txtSoChungTu, "Đã có Số chứng tử này trong hệ thống");
                txtSoChungTu.Focus();
            }
        }

        private void txtSoChungTu_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) || txtSoChungTu.Text.Length > 7 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtNoiCapBaoTu_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtNoiCapBaoTu.Text.Length > 49)
            {
                e.Handled = true;
            }
        }

        private void txtNguoiDangki_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtNguoiDangki.Text.Length > 49)
            {
                e.Handled = true;
            }
        }

        private void txtNoiChet_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtNoiChet.Text.Length > 49)
            {
                e.Handled = true;
            }
        }

        private void txtNoiOCuoiCung_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtNoiOCuoiCung.Text.Length > 254)
            {
                e.Handled = true;
            }
        }

        private void txtNoiCapChungTu_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtNoiCapChungTu.Text.Length > 49)
            {
                e.Handled = true;
            }
        }

        private void txtSoKT_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) || txtSoKT.Text.Length > 7 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
            if (e.KeyChar == 13)
                btnTim_Click(sender, e);
        }
    }
}
